今天要來講解TypeScript(TS)的選擇性屬性(Optional Properties),
在使用函式時時常會碰到參數有時需要有時不需要的情形,
但邏輯又幾乎相同,
這時就可以把這些函示寫在一起,再利用選擇性屬性參數傳入,
就能避免重複一直寫相同的函示。
首先來複習一下Day8的介面範例吧。
//宣告介面
interface MyFunc{
x:number;
y:number;
}
//函式
let func1=(p:MyFunc)=>{
console.log(p.x,p.y);
}
//使用函式
func1({x:10});//error 每項參數都必須對應到
func1({x:10,y:20});
func1({x:10,y:20,z:20}); //error 未標記z視為錯誤
這個範例所標記的參數在使用時不能多也不能少,
如此一來,在使用時就會缺少彈性,
那若是參數傳入可有可無時,
這時就需要使用選擇性屬性來增加函式的彈性,
使用方式非常簡單,
在介面屬性名稱後面加上 ? 就行了,
例如,若是y為可有可無的參數,
介面的宣告如下,
//宣告介面
interface MyFunc{
x:number;
y?:number;
}
如此一來,y即為選擇性屬性。
那麼函示可能也會有些不同需要做些邏輯判斷,
例如,
//函式
let func1=(p:MyFunc)=>{
if(p.y){
console.log(p.x,p.y);
}else{
console.log(p.x);
}
}
//使用函式
func1({x:10,y:20});
func1({x:10});
像這樣將y訂為選擇性屬性後,
在使用上就有更多不同的彈性了,
也可以避免重複寫太多相同的函式喔。
今天教得很簡單,
但是非常實用呢,
希望大家可以利用選擇性屬性,
讓自己的程式碼更加簡潔俐落,
也更容易維護喔!